<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <!-- 
    ！注意写上题目题数
    例如 ：
    1、选择题
        (1)D
        (2)C
        (3)1、true 2、false 3、false
        (4)A
        (5)A
    2、填空题
        1、
        (1)document.querySelector、document.getElementsByTagName、document.getElementsByClassName
        (2)document.createElement("")、document.createTextNode()
        (3)document.appendChild(Element)、node.append(element) 
        (4)node.removeChild(子节点) 、 Node.childNodes、child.parentNode
        2、
        (1)Object.prototype
        (2) Object.__proto__
        (3)Object.prototype
        (4)Array.prototype
        (5)Object.prototype
        (6)Function.prototype
        (7)Function.prototype
        (8)Function.prototype
        (9)Boolean.prototype
        (10)Object.prototype
    3、描述题   
        1、 ajax(阿贾克斯)执行异步网络请求, 是一种创建动态网页技术，是一种在无需刷新加载整个网页的情况下, 能够更新部分网页内容的技术
        2、this的属性有apply、call、bind；this的原型是实例化对象
        3、EventLoop即事件循环，是指浏览器或Node的一种解决javaScript单线程运行时不会阻塞的一种机制，也就是我们经常使用异步的原理。
        4、原型是一个对象,我们也称为prototype为原型对象，原型的作用是共享方法，js在创建对象的时候，都有内置属性proto,用于指向构造函数的原型对象(prototype)
    4、逻辑题
        1、"Goodbye Jack"
        2、10
        3、21
        4、alert(667)
        5、Hy、Jack
        6、HanMeiMei，Jack 
        7、112
    5、实操题
        1、 ES5:  function Fn() {};
                  let nb = new Fn(); 

            ES6:   class Fn {
                     constructor(name) {
                     this.name = name;
                             }
                             }
                     let nb = new Fn("流汗"); 

        2、// Promise 封装 ajax
        function fetch(method, url, data){
        return new Promise((resolve, reject) => {
        var xhr = new XMLHttpRequest();
        var method = method || "GET";
        var data = data || null;
        xhr.open(method, url, true);
        xhr.onreadystatechange = function() {
            if(xhr.status === 200 && xhr.readyState === 4){
                resolve(xhr.responseText);
            } else {
                reject(xhr.responseText);
            }
        }
        xhr.send(data);
        })
        }
        fetch("GET", "/some/url.json", null)
        .then(result => {
        console.log(result);
        })

        3、第一种: 
           let arr = [1, 2, 5, 2, 4, 5, 10, 2, 5, 1, 2, 4, 5, 8, 6, 4];
           let newArr = new Set(arr);
           console.log(newArr);

           第二种:
           let arr = [1, 2, 5, 2, 4, 5, 10, 2, 5, 1, 2, 4, 5, 8, 6, 4];
           for (var i = 0; i < arr.length; i++) {
           for (var j = i + 1; j < arr.length; j++) {
           if (arr[i] == arr[j]) {
           arr.splice(j, 1);
           j--;
           }
           }
           }
           console.log(arr);

           第三种:
           let arr = [1, 2, 5, 2, 4, 5, 10, 2, 5, 1, 2, 4, 5, 8, 6, 4];
           var array = [];
           for (var i = 0; i < arr.length; i++) {
           if (array.indexOf(arr[i]) === -1) {
           array.push(arr[i])
           }
           }
           console.log(array);

           第四种:
           let arr = [1, 2, 5, 2, 4, 5, 10, 2, 5, 1, 2, 4, 5, 8, 6, 4];
           var array = [];
           for (var i = 0; i < arr.length; i++) {
           if (!array.includes(arr[i])) {
           array.push(arr[i]);
           }
           }
           console.log(array);

           第五种:
           let arr = [1, 2, 5, 2, 4, 5, 10, 2, 5, 1, 2, 4, 5, 8, 6, 4];
           function fn(arr) {
           return arr.filter(function(item, index, arr) {
           return arr.indexOf(item, 0) === index;
           });
           }
           console.log(fn(arr));
    -->
</body>

</html>